package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 合同对象 sys_contract
 *
 * @author ruoyi
 * @date 2025-06-16
 */
public class SysContract extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 合同主键 */
    private Long id;

    /** 备注 */
    @Excel(name = "备注")
    private String note;

    /** 周数 */
    @Excel(name = "周数")
    private Long week;

    /** 签约者 */
    @Excel(name = "签约者")
    private Long signerId;

    /** 签约者名称 */
    @Excel(name = "签约者名称")
    private String signerName;

    /** 在读状态 */
    @Excel(name = "在读状态")
    private Long isStudying;

    /** 签约日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签约日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date signerTime;

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签约日期:起")
    private Date signerTimeBegin;

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签约日期:止")
    private Date signerTimeEnd;

    /** 合同状态 */
    @Excel(name = "合同状态")
    private Long status;

    /** 校长审批时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "校长审批时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date principalApproveTime;

    /** 出纳审批时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出纳审批时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date cashierApproveTime;

    /** 出纳确认:起 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出纳确认:起")
    private Date cashierApproveTimeBegin;

    /** 出纳确认止 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出纳确认:止")
    private Date cashierApproveTimeEnd;

    /** 推荐人 */
    @Excel(name = "推荐人")
    private Long referrerId;

    /** 持续可能 */
    @Excel(name = "持续可能")
    private Long isSustain;

    /** 合同确认状态 */
    @Excel(name = "合同确认状态")
    private Long contractConfirmStatus;

    /** 班主任 */
    @Excel(name = "班主任")
    private Long teacherId;

    /** 班主任名称 */
    @Excel(name = "班主任名称")
    private String teacherName;

    /** 出纳人 */
    @Excel(name = "出纳人")
    private Long cashierId;

    /** 校长 */
    @Excel(name = "校长")
    private Long principalId;

    /** 线索客户主键 */
    @Excel(name = "线索客户主键")
    private Long customerId;

    /** 线索客户名称 */
    @Excel(name = "线索客户名称")
    private String customerName;

    /** 所属校区 */
    @Excel(name = "所属校区")
    private Long campusId;

    /** 所属校区名称 */
    @Excel(name = "所属校区名称")
    private String campusName;

    /** 合同属性 */
    @Excel(name = "合同属性")
    private Long contractAttribute;

    /** 合同类型 */
    @Excel(name = "合同类型")
    private Long contractType;

    /** 合同类型名称 */
    @Excel(name = "合同类型名称")
    private String contractTypeName;

    /** 合同金额 */
    @Excel(name = "合同金额")
    private BigDecimal contractMoney;

    /** 已支付金额 */
    @Excel(name = "已支付金额")
    private BigDecimal payMoney;

    /** 合同编号 */
    @Excel(name = "合同编号")
    private String contractCode;

    /** 开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始日期")
    private Date beginTime;

    /** 是否推荐 */
    @Excel(name = "是否推荐")
    private Long isReferrer;

    /** 年级 */
    @Excel(name = "年级")
    private Long grade;

    /** 剩余金额 */
    @Excel(name = "剩余金额")
    private BigDecimal remainingMoney;

    /** 合同明细 */
    @Excel(name = "合同明细")
    private List<SysContractLabel> sysContractLabelList;

    /** 支付明细 */
    @Excel(name = "支付明细")
    private List<SysContractPayLabel> sysContractPayLabelList;

    /** 业绩分配 */
    @Excel(name = "业绩分配")
    private List<SysContractSpd> sysContractSpdList;

    /** 合同日志 */
    @Excel(name = "合同日志")
    private List<SysContractLog> sysContractLogList;

    /** 剩余课时 */
    @Excel(name = "剩余课时")
    private Long remainingClassTime;

    /** 用户主键 */
    @Excel(name = "用户主键")
    private Long userId;

    /** 部门主键 */
    @Excel(name = "部门主键")
    private Long deptId;

    public Long getDeptId() {
        return deptId;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Date getCashierApproveTimeBegin() {
        return cashierApproveTimeBegin;
    }

    public void setCashierApproveTimeBegin(Date cashierApproveTimeBegin) {
        this.cashierApproveTimeBegin = cashierApproveTimeBegin;
    }

    public Date getCashierApproveTimeEnd() {
        return cashierApproveTimeEnd;
    }

    public void setCashierApproveTimeEnd(Date cashierApproveTimeEnd) {
        this.cashierApproveTimeEnd = cashierApproveTimeEnd;
    }

    public Date getSignerTimeBegin() {
        return signerTimeBegin;
    }

    public void setSignerTimeBegin(Date signerTimeBegin) {
        this.signerTimeBegin = signerTimeBegin;
    }

    public Date getSignerTimeEnd() {
        return signerTimeEnd;
    }

    public void setSignerTimeEnd(Date signerTimeEnd) {
        this.signerTimeEnd = signerTimeEnd;
    }

    public Long getRemainingClassTime() {
        return remainingClassTime;
    }

    public void setRemainingClassTime(Long remainingClassTime) {
        this.remainingClassTime = remainingClassTime;
    }

    public List<SysContractLog> getSysContractLogList() {
        return sysContractLogList;
    }

    public void setSysContractLogList(List<SysContractLog> sysContractLogList) {
        this.sysContractLogList = sysContractLogList;
    }

    public List<SysContractSpd> getSysContractSpdList() {
        return sysContractSpdList;
    }

    public void setSysContractSpdList(List<SysContractSpd> sysContractSpdList) {
        this.sysContractSpdList = sysContractSpdList;
    }

    public List<SysContractPayLabel> getSysContractPayLabelList() {
        return sysContractPayLabelList;
    }

    public void setSysContractPayLabelList(List<SysContractPayLabel> sysContractPayLabelList) {
        this.sysContractPayLabelList = sysContractPayLabelList;
    }

    public BigDecimal getRemainingMoney() {
        return remainingMoney;
    }

    public void setRemainingMoney(BigDecimal remainingMoney) {
        this.remainingMoney = remainingMoney;
    }

    public List<SysContractLabel> getSysContractLabelList() {
        return sysContractLabelList;
    }

    public void setSysContractLabelList(List<SysContractLabel> sysContractLabelList) {
        this.sysContractLabelList = sysContractLabelList;
    }

    public String getSignerName() {
        return signerName;
    }

    public void setSignerName(String signerName) {
        this.signerName = signerName;
    }

    public String getTeacherName() {
        return teacherName;
    }

    public void setTeacherName(String teacherName) {
        this.teacherName = teacherName;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String getCampusName() {
        return campusName;
    }

    public void setCampusName(String campusName) {
        this.campusName = campusName;
    }

    public String getContractTypeName() {
        return contractTypeName;
    }

    public void setContractTypeName(String contractTypeName) {
        this.contractTypeName = contractTypeName;
    }

    public Long getGrade() {
        return grade;
    }

    public void setGrade(Long grade) {
        this.grade = grade;
    }

    public Long getIsReferrer() {
        return isReferrer;
    }

    public void setIsReferrer(Long isReferrer) {
        this.isReferrer = isReferrer;
    }

    public Date getBeginTime() {
        return beginTime;
    }

    public void setBeginTime(Date beginTime) {
        this.beginTime = beginTime;
    }

    public String getContractCode() {
        return contractCode;
    }

    public void setContractCode(String contractCode) {
        this.contractCode = contractCode;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setNote(String note)
    {
        this.note = note;
    }

    public String getNote()
    {
        return note;
    }

    public void setWeek(Long week)
    {
        this.week = week;
    }

    public Long getWeek()
    {
        return week;
    }

    public void setSignerId(Long signerId)
    {
        this.signerId = signerId;
    }

    public Long getSignerId()
    {
        return signerId;
    }

    public void setIsStudying(Long isStudying)
    {
        this.isStudying = isStudying;
    }

    public Long getIsStudying()
    {
        return isStudying;
    }

    public void setSignerTime(Date signerTime)
    {
        this.signerTime = signerTime;
    }

    public Date getSignerTime()
    {
        return signerTime;
    }

    public void setStatus(Long status)
    {
        this.status = status;
    }

    public Long getStatus()
    {
        return status;
    }

    public void setPrincipalApproveTime(Date principalApproveTime)
    {
        this.principalApproveTime = principalApproveTime;
    }

    public Date getPrincipalApproveTime()
    {
        return principalApproveTime;
    }

    public void setCashierApproveTime(Date cashierApproveTime)
    {
        this.cashierApproveTime = cashierApproveTime;
    }

    public Date getCashierApproveTime()
    {
        return cashierApproveTime;
    }

    public void setReferrerId(Long referrerId)
    {
        this.referrerId = referrerId;
    }

    public Long getReferrerId()
    {
        return referrerId;
    }

    public void setIsSustain(Long isSustain)
    {
        this.isSustain = isSustain;
    }

    public Long getIsSustain()
    {
        return isSustain;
    }

    public void setContractConfirmStatus(Long contractConfirmStatus)
    {
        this.contractConfirmStatus = contractConfirmStatus;
    }

    public Long getContractConfirmStatus()
    {
        return contractConfirmStatus;
    }

    public void setTeacherId(Long teacherId)
    {
        this.teacherId = teacherId;
    }

    public Long getTeacherId()
    {
        return teacherId;
    }

    public void setCashierId(Long cashierId)
    {
        this.cashierId = cashierId;
    }

    public Long getCashierId()
    {
        return cashierId;
    }

    public void setPrincipalId(Long principalId)
    {
        this.principalId = principalId;
    }

    public Long getPrincipalId()
    {
        return principalId;
    }

    public void setCustomerId(Long customerId)
    {
        this.customerId = customerId;
    }

    public Long getCustomerId()
    {
        return customerId;
    }

    public void setCampusId(Long campusId)
    {
        this.campusId = campusId;
    }

    public Long getCampusId()
    {
        return campusId;
    }

    public void setContractAttribute(Long contractAttribute)
    {
        this.contractAttribute = contractAttribute;
    }

    public Long getContractAttribute()
    {
        return contractAttribute;
    }

    public void setContractType(Long contractType)
    {
        this.contractType = contractType;
    }

    public Long getContractType()
    {
        return contractType;
    }

    public void setContractMoney(BigDecimal contractMoney)
    {
        this.contractMoney = contractMoney;
    }

    public BigDecimal getContractMoney()
    {
        return contractMoney;
    }

    public void setPayMoney(BigDecimal payMoney)
    {
        this.payMoney = payMoney;
    }

    public BigDecimal getPayMoney()
    {
        return payMoney;
    }

    @Override
    public String toString() {
        return "SysContract{" +
                "id=" + id +
                ", note='" + note + '\'' +
                ", week=" + week +
                ", signerId=" + signerId +
                ", isStudying=" + isStudying +
                ", signerTime=" + signerTime +
                ", status=" + status +
                ", principalApproveTime=" + principalApproveTime +
                ", cashierApproveTime=" + cashierApproveTime +
                ", referrerId=" + referrerId +
                ", isSustain=" + isSustain +
                ", contractConfirmStatus=" + contractConfirmStatus +
                ", techerId=" + teacherId +
                ", cashierId=" + cashierId +
                ", principalId=" + principalId +
                ", customerId=" + customerId +
                ", campusId=" + campusId +
                ", contractAttribute=" + contractAttribute +
                ", contractType=" + contractType +
                ", contractMoney=" + contractMoney +
                ", payMoney=" + payMoney +
                ", contractCode='" + contractCode + '\'' +
                ", beginTime=" + beginTime +
                ", isReferrer=" + isReferrer +
                '}';
    }
}